// 数据库company  集合workmate 文件内容是demo06.js的文件内容

var db=connect('company'); //链接数据库

// $set修改器
  // 用来修改一个指定的键值(key),这时候我们要修改上节课的sex和age就非常方便了，只要一句话就可以搞定。
// db.workmate.update({'name':'MinJie'},{$set:{sex:2,age:21}});

// $set 也可以修改嵌套内容(内嵌文档)
  // 比如现在的UI的技能发生了变化，说她不会作PPT而是word作的很好，需要进行修改。这时候你会发现skill数据是内嵌的，这时候我们可以属性的形式进行修改，skill.skillThree。具体看下面的代码
// db.workmate.update({name:'MinJie'},{$set:{'skill.SkillThree':'word12'}})  //内嵌里面的键值对,注意大小写,存的是大写,改的时候写也是要大写,否则,就会变成添加

// $unset用于将key和对应值删除
  // 它的作用其实就是删除一个key值和键。一般女孩子都是不希望看到自己的年龄的，所以要求我们把年龄删除。这时候我们就可以使用$unset的形式。
// db.workmate.update({ 'name': 'MinJie' }, { $unset: {'skill.skilltree':''}}) //也可以改内嵌的内容, 赋值为空,就是删除

// $inc对数字进行计算
  // 它是对value值的修改，但是修改的必须是数字，字符串是不起效果的。我们现在要对MiJie的年龄减去2岁，就可以直接用$inc来操作。
// db.workmate.update({'name':'MinJie'},{$inc:{age:-2}})

// multi选项 全局,所有的都改,当然,条件也必须是全局{}  只有ture(全部修改)  和false只修改一个（默认值)  两个值
  // 现在领导说了，你要把每个人的爱好也加入进来，但是如果你直接写会只加一个，比如下面这种形式。
// db.workmate.update({}, { $set: { interset: [] } })
  // 这时候你用db.workmate.find()查找，你会发现只改变了第一个数据，其他两条没有改变。这时候我们想改变就要用到multi选项。
// db.workmate.update({}, { $set: { interset: [] } }, { multi: true })  
  // 这时候每个数据都发生了改变，multi是有ture和false两个值，true代表全部修改，false代表只修改一个（默认值）

// upsert选项
  // upsert是在找不到值的情况下，直接插入这条数据。比如我们这时候又来了一个新同事xiaoWang，我们这时候修改他的信息，age设置成20岁，但集合中并没有这条数据。这时候可以使用upsert选项直接添加。
// db.workmate.update({ name: 'xiaoWang' }, { $set: { age: 20 } }, { upsert: true})
  // upsert也有两个值：true代表没有就添加，false代表没有不添加(默认值)。

// 总结：这节课的内容非常多，主要学习了update修改器有关的一些东西。一定要课下多练习几遍，否则很快就会忘记的。

// 个人练习
// 1. 想法,把每个人的年龄都删除
// db.workmate.update({},{$unset:{'age':''}},{multi:true});
// 2. 给JSPang单独加年龄
// db.workmate.update({ name:'JSPang'},{$set:{age:21}})
// 3.给所有人加年龄,并且为33岁,如果已经有年龄的了,则用他之前的,否则添加年龄这个信息   这个暂时实现不了,会全部改为33,不知道为何
// db.workmate.update({}, { $set: { age: 33 } },true,true)  //也可以这样用,第一个true代表upsert,第二个是multi
// db.workmate.update({}, { $set: { age: 33 } }, {  upsert: true,multi: true })


// 菜鸟教程 update的用法
  // db.collection.update(
  // < query >,
  // <update>,
  //  {
  //     upsert: <boolean>,
  //    multi: <boolean>,
  //    writeConcern: <document>
  //  }
  //      )
       
       
print('修改成功')